home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / qlib205.zip / QLIB.ZIP / SRC / QLIB / SYSTEM.ASM < prev    next >
Assembly Source File  |  1997-01-20  |  1KB  |  66 lines

  1. include qlib.inc
  2. include string.inc
  3. include stdlib.inc
  4. include errno.inc
  5. include stdio.inc
  6.  
  7. .data?
  8.   comspec db 128 dup (?)
  9.   arglen db 0
  10.   args db 128 dup (?)
  11. .data
  12.   pbs struct  ;parameter block
  13.     enviroff dd ?
  14.     envirsel dw ?
  15.     cto dd offset arglen
  16.     cts dw ?
  17.     fcb1 dd 0
  18.     fcb2 dd 0
  19.   pbs ends
  20.   pb pbs <>
  21. .code
  22. system proc,sys:dword
  23.   mov ax,seldata
  24.   mov pb.envirsel,ax
  25.   mov pb.cts,ax
  26.   mov eax,_environ
  27.   mov pb.enviroff,eax
  28.   callp getenv,"COMSPEC"
  29.   .if eax==NULL
  30.     jmp bad
  31.   .endif
  32.   callp strcpy,offset comspec,eax
  33.   callp strcpy,offset args," /C "  ;FIX : v2.00 Beta #2
  34.   callp strcat,offset args,sys
  35.   callp strlen,offset args
  36.   .if eax>127
  37.     mov errno,E2BIG
  38.     jmp bad
  39.   .endif
  40.   mov arglen,al
  41.   pushad
  42.   mov edx,offset comspec
  43.   mov ebx,offset pb
  44.   mov ax,4b00h
  45.   int 21h
  46.   .if carry?
  47.     mov eax,ERROR
  48.     jmp bad
  49.   .endif
  50.   mov edx,_dta
  51.   mov ah,1ah
  52.   int 21h  ;reset DTA
  53.   popad
  54.   xor eax,eax
  55.   ret
  56. bad:
  57.   mov edx,_dta
  58.   mov ah,1ah
  59.   int 21h  ;reset DTA
  60.   popad
  61.   mov eax,ERROR
  62.   ret
  63. system endp
  64. end
  65.  
  66.